package co.edu.udea.herbario.dao;

import org.hibernate.HibernateException;

import co.edu.udea.herbario.dto.Municipio;
import co.edu.udea.herbario.excepcion.Excepcion;

/**
 * Clase de tipo interface que contiene la declaracion de los metodos utilizados para gestionar
 * los datos de la tabla Municipio entre la persistencia y la logica de la aplicacion
 * 
 * @author Lorena Orozco, Alejandro Areiza, Marcela Colorado
 *
 */

public interface MunicipioDao 
{	
	/**
	 * Metodo que obtiene desde la tabla Municipio el elemento referenciado con el codigo indicado
	 * como parametro
	 * 
	 * @param cod es el codigo que identifica al municipio dentro del sistema
	 * 
	 * @return retorna un objeto de tipo Municipio
	 * 
	 * @throws Excepcion
	 */
	public Municipio obtener(int cod) throws Excepcion;
	
	/**
	 * Metodo para crear un elemento dentro de la tabla Municipio
	 * 
	 * @param mun es un objeto de tipo Municipio que contiene los datos del elemento que se desea 
	 * ingresar en la tabla Municipio
	 * 
	 * @return retorna un entero: res = 1 si se realizo correctamente la creacion, de
	 * lo contrario res = -1
	 * 
	 * @throws Excepcion
	 */
	public int crear(Municipio mun) throws Excepcion;
	
	/**
	 * Modifica el estado (activo o inactivo) del elemento de la tabla Municipio que coincida con los datos 
	 * que contiene el objeto pasado como parametro
	 * 
	 * @param mun es un objeto de tipo Municipio
	 * 
	 * @return retorna un entero: res = 1 si se realiz� correctamente la actualizaci�n, de
	 * lo contrario res = -1
	 * 
	 * @throws Excepcion
	 */
	public int eliminar(Municipio mun) throws Excepcion;
	
	
	/**
	 * Obtiene el elemento de la tabla Municipio asociado al nombre dado
	 * 
	 * @param nombre es el valor con el cual se buscara municipio
	 * 
	 * @return retorna un objeto de tipo Municipio
	 * 
	 * @throws Excepcion
	 */
	public Municipio obtenerMunicipioPorNombre(String nombre) throws Excepcion;
}
